package com.itheima.api.array.demo03;

public class DiGuiDemo {

    /**
     * 计算5的阶乘：
     * 5！= 5 * 4 * 3 * 2 * 1
     *
     * 5！= 5 * 4!
     *
     * 4! = 4 * 3!
     *
     * 3! = 3 * 2!
     *
     * 2! = 2 * 1!
     *
     * 1! = 1 ;
     *
     *
     * @param args
     */

    // 入口
    public static void main(String[] args) {

        // 测试
//        int result = fac(4);
//        System.out.println(result);

        // 调用show方法
//        show();

    }

    /**
     * 概述：就是方法定义中调用方法本身的现象
     * 注意：递归一定要有出口，如果没有出口就是"死递归"，最终就会导致栈内存溢出；递归次数不宜过多，如果过多也会导致"内存溢出"。
     */
//    public static void show(){
//        System.out.println("show......................");
//        show();
//    }


    /**
     * 定义一个方法，该方法的主要作用就是计算n的阶乘，n代表的方法参数
     */
    public static int fac(int n) {

        if(n == 1) {
            return 1 ;
        }else {

            /**
             * 比如用户传递的参数值就是5,表示的意思就是需要通过fac函数去计算5的阶乘，而5阶乘应该 = 5 * 4！
             * 4！的阶乘  fac(4)
             */

            return n * fac(n - 1) ;

        }

    }



}
